package cn.sys.service;

import cn.sys.entity.StuSecurityQuestionAnswer;
import cn.sys.entity.Student;
import cn.sys.util.ResultData;

import java.util.Date;

public interface StudentService {
    /**
     * 处理登录业务逻辑  输入用户名和密码登录
     */
    ResultData login(String studentName, String password);

    /**
     * 查询用户密保问题集合，前提是用户输入的用户名或电话号码在数据库中存在
     */
    ResultData findQuestion(String studentNameOrPhone);

    /**
     * 检查用户答案是否正确
     */
    ResultData checkAnswer(String sessionId, int stuId, String question, String answer);

    /**
     * 当用户点击忘记密码操作时，修改密码
     */
    ResultData forgetUpdatePassword(String sessionId, String newPassword);

    /**
     * 个人信息修改
     */
    ResultData updateStudentInfo(Student student);

    /**
     *  用户登录成功，修改登录时间，并将失败次数置为0
     */
    ResultData updateLoginCountAndLoginTime(Date loginTime, int stuId);

    /**
     * 用户登录失败，将失败次数加1，如果次数累加到5，就冻结账户
     */
    ResultData addLoginCountByName(String stuName);

    /**
     * 判断查询用户的账号是否锁定
     */
    ResultData checkStudentLockState(String stuName);

    /**
     * 用户在登录的情况下，修改密码
     */
    ResultData updatePassword(int stuId, String newPassword);

    /**
     * 得到数据库中所有的密保问题
     */
    ResultData findAllSecurityQuestion();

    /**
     * 添加密保问题，如果密保存在就修改答案
     */
    ResultData addStuSecurityQuestionAnswer(StuSecurityQuestionAnswer questionAnswer);
}
